/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package mtbldomain;

import org.eclipse.emf.common.util.EList;

import org.eclipse.emf.ecore.EObject;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Metric Description Type</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link mtbldomain.MetricDescriptionType#getMetric <em>Metric</em>}</li>
 *   <li>{@link mtbldomain.MetricDescriptionType#getMetricDescription <em>Metric Description</em>}</li>
 *   <li>{@link mtbldomain.MetricDescriptionType#getContainerName <em>Container Name</em>}</li>
 *   <li>{@link mtbldomain.MetricDescriptionType#getEndOffset <em>End Offset</em>}</li>
 *   <li>{@link mtbldomain.MetricDescriptionType#getFqname <em>Fqname</em>}</li>
 *   <li>{@link mtbldomain.MetricDescriptionType#getKind <em>Kind</em>}</li>
 *   <li>{@link mtbldomain.MetricDescriptionType#getLanguage <em>Language</em>}</li>
 *   <li>{@link mtbldomain.MetricDescriptionType#getLine <em>Line</em>}</li>
 *   <li>{@link mtbldomain.MetricDescriptionType#getLocation <em>Location</em>}</li>
 *   <li>{@link mtbldomain.MetricDescriptionType#getName <em>Name</em>}</li>
 *   <li>{@link mtbldomain.MetricDescriptionType#getOffset <em>Offset</em>}</li>
 *   <li>{@link mtbldomain.MetricDescriptionType#getProjectName <em>Project Name</em>}</li>
 *   <li>{@link mtbldomain.MetricDescriptionType#getResource <em>Resource</em>}</li>
 *   <li>{@link mtbldomain.MetricDescriptionType#getResourceName <em>Resource Name</em>}</li>
 *   <li>{@link mtbldomain.MetricDescriptionType#getTimestamp <em>Timestamp</em>}</li>
 * </ul>
 * </p>
 *
 * @see mtbldomain.MtblDomainPackage#getMetricDescriptionType()
 * @model extendedMetaData="name='MetricDescriptionType' kind='elementOnly'"
 * @generated
 */
public interface MetricDescriptionType extends EObject {
	
	public static final int PROJECT_KIND = 0;
	
	/**
	 * Returns the value of the '<em><b>Metric</b></em>' containment reference list.
	 * The list contents are of type {@link mtbldomain.MetricType}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Metric</em>' containment reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Metric</em>' containment reference list.
	 * @see mtbldomain.MtblDomainPackage#getMetricDescriptionType_Metric()
	 * @model containment="true"
	 *        extendedMetaData="kind='element' name='Metric' namespace='##targetNamespace'"
	 * @generated
	 */
	EList<MetricType> getMetric();

	/**
	 * Returns the value of the '<em><b>Metric Description</b></em>' containment reference list.
	 * The list contents are of type {@link mtbldomain.MetricDescriptionType}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Metric Description</em>' containment reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Metric Description</em>' containment reference list.
	 * @see mtbldomain.MtblDomainPackage#getMetricDescriptionType_MetricDescription()
	 * @model containment="true"
	 *        extendedMetaData="kind='element' name='MetricDescription' namespace='##targetNamespace'"
	 * @generated
	 */
	EList<MetricDescriptionType> getMetricDescription();

	/**
	 * Returns the value of the '<em><b>Container Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Container Name</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Container Name</em>' attribute.
	 * @see #setContainerName(String)
	 * @see mtbldomain.MtblDomainPackage#getMetricDescriptionType_ContainerName()
	 * @model dataType="org.eclipse.emf.ecore.xml.type.String"
	 *        extendedMetaData="kind='attribute' name='containerName' namespace='##targetNamespace'"
	 * @generated
	 */
	String getContainerName();

	/**
	 * Sets the value of the '{@link mtbldomain.MetricDescriptionType#getContainerName <em>Container Name</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Container Name</em>' attribute.
	 * @see #getContainerName()
	 * @generated
	 */
	void setContainerName(String value);

	/**
	 * Returns the value of the '<em><b>End Offset</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>End Offset</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>End Offset</em>' attribute.
	 * @see #isSetEndOffset()
	 * @see #unsetEndOffset()
	 * @see #setEndOffset(int)
	 * @see mtbldomain.MtblDomainPackage#getMetricDescriptionType_EndOffset()
	 * @model unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Int"
	 *        extendedMetaData="kind='attribute' name='endOffset' namespace='##targetNamespace'"
	 * @generated
	 */
	int getEndOffset();

	/**
	 * Sets the value of the '{@link mtbldomain.MetricDescriptionType#getEndOffset <em>End Offset</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>End Offset</em>' attribute.
	 * @see #isSetEndOffset()
	 * @see #unsetEndOffset()
	 * @see #getEndOffset()
	 * @generated
	 */
	void setEndOffset(int value);

	/**
	 * Unsets the value of the '{@link mtbldomain.MetricDescriptionType#getEndOffset <em>End Offset</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isSetEndOffset()
	 * @see #getEndOffset()
	 * @see #setEndOffset(int)
	 * @generated
	 */
	void unsetEndOffset();

	/**
	 * Returns whether the value of the '{@link mtbldomain.MetricDescriptionType#getEndOffset <em>End Offset</em>}' attribute is set.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return whether the value of the '<em>End Offset</em>' attribute is set.
	 * @see #unsetEndOffset()
	 * @see #getEndOffset()
	 * @see #setEndOffset(int)
	 * @generated
	 */
	boolean isSetEndOffset();

	/**
	 * Returns the value of the '<em><b>Fqname</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Fqname</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Fqname</em>' attribute.
	 * @see #setFqname(String)
	 * @see mtbldomain.MtblDomainPackage#getMetricDescriptionType_Fqname()
	 * @model dataType="org.eclipse.emf.ecore.xml.type.String"
	 *        extendedMetaData="kind='attribute' name='fqname' namespace='##targetNamespace'"
	 * @generated
	 */
	String getFqname();

	/**
	 * Sets the value of the '{@link mtbldomain.MetricDescriptionType#getFqname <em>Fqname</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Fqname</em>' attribute.
	 * @see #getFqname()
	 * @generated
	 */
	void setFqname(String value);

	/**
	 * Returns the value of the '<em><b>Kind</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Kind</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Kind</em>' attribute.
	 * @see #isSetKind()
	 * @see #unsetKind()
	 * @see #setKind(int)
	 * @see mtbldomain.MtblDomainPackage#getMetricDescriptionType_Kind()
	 * @model unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Int"
	 *        extendedMetaData="kind='attribute' name='kind' namespace='##targetNamespace'"
	 * @generated
	 */
	int getKind();

	/**
	 * Sets the value of the '{@link mtbldomain.MetricDescriptionType#getKind <em>Kind</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Kind</em>' attribute.
	 * @see #isSetKind()
	 * @see #unsetKind()
	 * @see #getKind()
	 * @generated
	 */
	void setKind(int value);

	/**
	 * Unsets the value of the '{@link mtbldomain.MetricDescriptionType#getKind <em>Kind</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isSetKind()
	 * @see #getKind()
	 * @see #setKind(int)
	 * @generated
	 */
	void unsetKind();

	/**
	 * Returns whether the value of the '{@link mtbldomain.MetricDescriptionType#getKind <em>Kind</em>}' attribute is set.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return whether the value of the '<em>Kind</em>' attribute is set.
	 * @see #unsetKind()
	 * @see #getKind()
	 * @see #setKind(int)
	 * @generated
	 */
	boolean isSetKind();

	/**
	 * Returns the value of the '<em><b>Language</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Language</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Language</em>' attribute.
	 * @see #setLanguage(String)
	 * @see mtbldomain.MtblDomainPackage#getMetricDescriptionType_Language()
	 * @model dataType="org.eclipse.emf.ecore.xml.type.String"
	 *        extendedMetaData="kind='attribute' name='language' namespace='##targetNamespace'"
	 * @generated
	 */
	String getLanguage();

	/**
	 * Sets the value of the '{@link mtbldomain.MetricDescriptionType#getLanguage <em>Language</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Language</em>' attribute.
	 * @see #getLanguage()
	 * @generated
	 */
	void setLanguage(String value);

	/**
	 * Returns the value of the '<em><b>Line</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Line</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Line</em>' attribute.
	 * @see #isSetLine()
	 * @see #unsetLine()
	 * @see #setLine(int)
	 * @see mtbldomain.MtblDomainPackage#getMetricDescriptionType_Line()
	 * @model unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Int"
	 *        extendedMetaData="kind='attribute' name='line' namespace='##targetNamespace'"
	 * @generated
	 */
	int getLine();

	/**
	 * Sets the value of the '{@link mtbldomain.MetricDescriptionType#getLine <em>Line</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Line</em>' attribute.
	 * @see #isSetLine()
	 * @see #unsetLine()
	 * @see #getLine()
	 * @generated
	 */
	void setLine(int value);

	/**
	 * Unsets the value of the '{@link mtbldomain.MetricDescriptionType#getLine <em>Line</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isSetLine()
	 * @see #getLine()
	 * @see #setLine(int)
	 * @generated
	 */
	void unsetLine();

	/**
	 * Returns whether the value of the '{@link mtbldomain.MetricDescriptionType#getLine <em>Line</em>}' attribute is set.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return whether the value of the '<em>Line</em>' attribute is set.
	 * @see #unsetLine()
	 * @see #getLine()
	 * @see #setLine(int)
	 * @generated
	 */
	boolean isSetLine();

	/**
	 * Returns the value of the '<em><b>Location</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Location</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Location</em>' attribute.
	 * @see #setLocation(String)
	 * @see mtbldomain.MtblDomainPackage#getMetricDescriptionType_Location()
	 * @model dataType="org.eclipse.emf.ecore.xml.type.String"
	 *        extendedMetaData="kind='attribute' name='location' namespace='##targetNamespace'"
	 * @generated
	 */
	String getLocation();

	/**
	 * Sets the value of the '{@link mtbldomain.MetricDescriptionType#getLocation <em>Location</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Location</em>' attribute.
	 * @see #getLocation()
	 * @generated
	 */
	void setLocation(String value);

	/**
	 * Returns the value of the '<em><b>Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Name</em>' attribute.
	 * @see #setName(String)
	 * @see mtbldomain.MtblDomainPackage#getMetricDescriptionType_Name()
	 * @model dataType="org.eclipse.emf.ecore.xml.type.String"
	 *        extendedMetaData="kind='attribute' name='name' namespace='##targetNamespace'"
	 * @generated
	 */
	String getName();

	/**
	 * Sets the value of the '{@link mtbldomain.MetricDescriptionType#getName <em>Name</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Name</em>' attribute.
	 * @see #getName()
	 * @generated
	 */
	void setName(String value);

	/**
	 * Returns the value of the '<em><b>Offset</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Offset</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Offset</em>' attribute.
	 * @see #isSetOffset()
	 * @see #unsetOffset()
	 * @see #setOffset(int)
	 * @see mtbldomain.MtblDomainPackage#getMetricDescriptionType_Offset()
	 * @model unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Int"
	 *        extendedMetaData="kind='attribute' name='offset' namespace='##targetNamespace'"
	 * @generated
	 */
	int getOffset();

	/**
	 * Sets the value of the '{@link mtbldomain.MetricDescriptionType#getOffset <em>Offset</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Offset</em>' attribute.
	 * @see #isSetOffset()
	 * @see #unsetOffset()
	 * @see #getOffset()
	 * @generated
	 */
	void setOffset(int value);

	/**
	 * Unsets the value of the '{@link mtbldomain.MetricDescriptionType#getOffset <em>Offset</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isSetOffset()
	 * @see #getOffset()
	 * @see #setOffset(int)
	 * @generated
	 */
	void unsetOffset();

	/**
	 * Returns whether the value of the '{@link mtbldomain.MetricDescriptionType#getOffset <em>Offset</em>}' attribute is set.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return whether the value of the '<em>Offset</em>' attribute is set.
	 * @see #unsetOffset()
	 * @see #getOffset()
	 * @see #setOffset(int)
	 * @generated
	 */
	boolean isSetOffset();

	/**
	 * Returns the value of the '<em><b>Project Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Project Name</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Project Name</em>' attribute.
	 * @see #setProjectName(String)
	 * @see mtbldomain.MtblDomainPackage#getMetricDescriptionType_ProjectName()
	 * @model dataType="org.eclipse.emf.ecore.xml.type.String"
	 *        extendedMetaData="kind='attribute' name='projectName' namespace='##targetNamespace'"
	 * @generated
	 */
	String getProjectName();

	/**
	 * Sets the value of the '{@link mtbldomain.MetricDescriptionType#getProjectName <em>Project Name</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Project Name</em>' attribute.
	 * @see #getProjectName()
	 * @generated
	 */
	void setProjectName(String value);

	/**
	 * Returns the value of the '<em><b>Resource</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Resource</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Resource</em>' attribute.
	 * @see #setResource(String)
	 * @see mtbldomain.MtblDomainPackage#getMetricDescriptionType_Resource()
	 * @model dataType="org.eclipse.emf.ecore.xml.type.String"
	 *        extendedMetaData="kind='attribute' name='resource' namespace='##targetNamespace'"
	 * @generated
	 */
	String getResource();

	/**
	 * Sets the value of the '{@link mtbldomain.MetricDescriptionType#getResource <em>Resource</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Resource</em>' attribute.
	 * @see #getResource()
	 * @generated
	 */
	void setResource(String value);

	/**
	 * Returns the value of the '<em><b>Resource Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Resource Name</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Resource Name</em>' attribute.
	 * @see #setResourceName(String)
	 * @see mtbldomain.MtblDomainPackage#getMetricDescriptionType_ResourceName()
	 * @model dataType="org.eclipse.emf.ecore.xml.type.String"
	 *        extendedMetaData="kind='attribute' name='resourceName' namespace='##targetNamespace'"
	 * @generated
	 */
	String getResourceName();

	/**
	 * Sets the value of the '{@link mtbldomain.MetricDescriptionType#getResourceName <em>Resource Name</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Resource Name</em>' attribute.
	 * @see #getResourceName()
	 * @generated
	 */
	void setResourceName(String value);

	/**
	 * Returns the value of the '<em><b>Timestamp</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Timestamp</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Timestamp</em>' attribute.
	 * @see #isSetTimestamp()
	 * @see #unsetTimestamp()
	 * @see #setTimestamp(int)
	 * @see mtbldomain.MtblDomainPackage#getMetricDescriptionType_Timestamp()
	 * @model unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Int"
	 *        extendedMetaData="kind='attribute' name='timestamp' namespace='##targetNamespace'"
	 * @generated
	 */
	int getTimestamp();

	/**
	 * Sets the value of the '{@link mtbldomain.MetricDescriptionType#getTimestamp <em>Timestamp</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Timestamp</em>' attribute.
	 * @see #isSetTimestamp()
	 * @see #unsetTimestamp()
	 * @see #getTimestamp()
	 * @generated
	 */
	void setTimestamp(int value);

	/**
	 * Unsets the value of the '{@link mtbldomain.MetricDescriptionType#getTimestamp <em>Timestamp</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isSetTimestamp()
	 * @see #getTimestamp()
	 * @see #setTimestamp(int)
	 * @generated
	 */
	void unsetTimestamp();

	/**
	 * Returns whether the value of the '{@link mtbldomain.MetricDescriptionType#getTimestamp <em>Timestamp</em>}' attribute is set.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return whether the value of the '<em>Timestamp</em>' attribute is set.
	 * @see #unsetTimestamp()
	 * @see #getTimestamp()
	 * @see #setTimestamp(int)
	 * @generated
	 */
	boolean isSetTimestamp();

} // MetricDescriptionType
